package com.example.demo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//import static org.apache.commons.io.IOUtils.toByteArray;

@Component
public class AuthComment {

    //QQ 登陆页面的URL
    private final static String AUTHORIZATION_URL =
            "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=%s&redirect_uri=%s&scope=%s";
    //获取token的URL
    private final static String ACCESS_TOKEN_URL = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=%s&client_secret=%s&code=%s&redirect_uri=%s";
    // 获取用户 openid 的 URL
    private static final String OPEN_ID_URL = "https://graph.qq.com/oauth2.0/me?access_token=%s";
    // 获取用户信息的 URL，oauth_consumer_key 为 apiKey
    private static final String USER_INFO_URL = "https://graph.qq.com/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s";
    // 下面的属性可以通过配置读取
    // QQ 在登陆成功后回调的 URL，这个 URL 必须在 QQ 互联里填写过
    private static final String CALLBACK_URL = "http://127.0.0.1:8080/login/redirect";
    // QQ 互联应用管理中心的 APP ID
    private static final String APP_ID = "你的id";
    // QQ 互联应用管理中心的 APP Key
    private static final String APP_SECRET = "你的key";


//    /**
//     * QQ 登陆页面的URL
//     * @param scope
//     * @return
//     */
//    public String getAuthUrl(String scope) {
//        return String.format(AUTHORIZATION_URL, APP_ID, CALLBACK_URL, scope);
//    }
//
//    /**
//     * 获取Access Token值
//     */
//    public String getAccessToken(String code){
//        String ur = String.format(ACCESS_TOKEN_URL, APP_ID, APP_SECRET,code, CALLBACK_URL);
//        String compile = "access_token=(\\w*)&";
//        String result = this.getUrl(ur);
//        return this.getMatcher(result,compile);
//    }
//
//    /**
//     * 获取openId
//     * @param accessToken
//     * @return
//     */
//    public String getOpenId(String accessToken) {
//        String url = String.format(OPEN_ID_URL, accessToken);
//        String compile = "openid\":\"(\\w*)\"";
//        String result = this.getUrl(url);
//        return this.getMatcher(result,compile);
//    }
//
//    /**
//     * 获取qq用户信息
//     * @param accessToken
//     * @param openId
//     * @return
//     */
//    public JSONObject getUserInfo(String accessToken, String openId) {
//        String url = String.format(USER_INFO_URL, accessToken, APP_ID, openId);
//        String result = this.getUrl(url);
//        return JSON.parseObject(result);
//    }
//
//    private String getMatcher(String result,String compile) {
//        //使用正则表达式解析网址
//        Pattern p = Pattern.compile(compile);
//        Matcher m = p.matcher(result);
//        m.find();
//        return m.group(1);
//    }

//    //解析url
//    private String getUrl(String ur) {
//        try {
//            URL url = new URL(ur);
//            HttpURLConnection conn = null;
//            conn = (HttpURLConnection) url.openConnection();
//            conn.setConnectTimeout(5 * 1000);
//            conn.setRequestMethod("GET");
//            InputStream inStream = conn.getInputStream();
//            byte[] data = toByteArray(inStream);
//            String result = new String(data, "UTF-8");
//            System.out.println(result);
//            return result;
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return  null;
//    }

}